import 'dart:math';
import 'package:flutter/material.dart';

class BuildingList extends StatefulWidget {
  BuildingList({super.key, required this.point});

  String point;

  @override
  State<BuildingList> createState() => _RoomListState();
}

class _RoomListState extends State<BuildingList> {
  Map data = {
    "point": "", // 记录小区信息
    "size": 0, // 随机产生楼栋的数量
    "type": "", // 小区的楼栋名称(size>4 单元, size<=4 号楼)
  };

  @override
  void initState() {
    super.initState();
    setState(() {
      data['point'] = widget.point;
    });
    fakeData();
  }

  // 随机楼栋数据，3-8条数据
  // 如果大于5， 显示单元
  // 小于5， 显示楼栋
  void fakeData() {
    // 1. 先产生随机数
    int size = Random().nextInt(6) + 3;
    // 2. 根据随机数，生成数据
    String type = size > 5 ? '单元' : '楼栋';
    // 3. 赋值给data
    setState(() {
      data['size'] = size;
      data['type'] = type;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('选择楼栋')),
      body: ListView.builder(
        itemBuilder: (BuildContext context, int index) {
          return GestureDetector(
            onTap: () {
              Navigator.pushNamed(
                context,
                '/room_list',
                arguments: {
                  'point': data['point'],
                  'building': '${index + 1}${data['type']}',
                },
              );
            },
            child: Container(
              color: Colors.white,
              padding: const EdgeInsets.all(10),
              child: Row(
                children: [
                  Expanded(
                    child: Text('${data['point']}${index + 1}${data['type']}'),
                  ),
                  const Row(
                    children: [
                      Icon(
                        Icons.arrow_forward_ios,
                        size: 16,
                        color: Colors.black,
                      ),
                    ],
                  ),
                ],
              ),
            ),
          );
        },
        itemCount: data['size'],
      ),
    );
  }
}
